#ifndef __SYS_NETWORK_H__
#define __SYS_NETWORK_H__

/// <summary>
/// Includes
/// </summary>
#include <wchar.h>
#include <linux/types.h>
#include <linux/socket.h>
#include <linux/limits.h>
#include <linux/ioctl.h>

typedef unsigned short int sa_family_t;

/* Structure describing a generic socket address.  */
struct sockaddr
{
	sa_family_t sa_family;
	char sa_data[14];
};
 
/// <summary>
/// Network Pipeline
/// </summary>
int CreateSocket(int family, int type, int protocol);
int NetBind(int socket, const struct sockaddr *addr, int addrlen);
int NetSend(int socket, const void *buffer, int len, int flags);
int NetSendTo(int socket, const void *buffer, int len, int flags, const struct sockaddr *to, int tolen);
int CloseSocket(int handle);

/// <summary>
/// Adapter Pipeline
/// </summary>
int GetAdapter(void);

#endif